﻿#region Assembly mscorlib.dll, v4.0.30319
// C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Profile\Client\mscorlib.dll
#endregion

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.CodeDom.Compiler;

namespace System.Diagnostics.Contracts
{

	/// <summary>
	/// 
	/// </summary>
	[GeneratedCodeAttribute("XXX", "1.0.0")]
	public static class Contract
	{
		/// <summary>
		/// 
		/// </summary>
		/// <param name="condition"></param>
		[Conditional("DEBUG")]
		[Conditional("CONTRACTS_FULL")]
		public static void Assert(bool condition) { }

		/// <summary>
		/// 
		/// </summary>
		/// <param name="condition"></param>
		/// <param name="userMessage"></param>
		[Conditional("CONTRACTS_FULL")]
		[Conditional("DEBUG")]
		public static void Assert(bool condition, string userMessage) { }

		/// <summary>
		/// 
		/// </summary>
		/// <param name="condition"></param>
		/// <param name="userMessage"></param>
		[Conditional("CONTRACTS_FULL")]
		[Conditional("DEBUG")]
		public static void Assume(bool condition, string userMessage) { }

		/// <summary>
		/// 
		/// </summary>
		/// <param name="condition"></param>
		[Conditional("CONTRACTS_FULL")]
		[Conditional("DEBUG")]
		public static void Assume(bool condition) { }

		/// <summary>
		/// 
		/// </summary>
		[Conditional("CONTRACTS_FULL")]
		public static void EndContractBlock() { }

		/// <summary>
		/// 
		/// </summary>
		/// <param name="condition"></param>
		/// <param name="userMessage"></param>
		[Conditional("CONTRACTS_FULL")]
		public static void Ensures(bool condition, string userMessage) { }

		/// <summary>
		/// 
		/// </summary>
		/// <param name="condition"></param>
		[Conditional("CONTRACTS_FULL")]
		public static void Ensures(bool condition) { }

		/// <summary>
		/// 
		/// </summary>
		/// <typeparam name="TException"></typeparam>
		/// <param name="condition"></param>
		[Conditional("CONTRACTS_FULL")]
		public static void EnsuresOnThrow<TException>(bool condition) where TException : Exception { }

		/// <summary>
		/// 
		/// </summary>
		/// <typeparam name="TException"></typeparam>
		/// <param name="condition"></param>
		/// <param name="userMessage"></param>
		[Conditional("CONTRACTS_FULL")]
		public static void EnsuresOnThrow<TException>(bool condition, string userMessage) where TException : Exception { }

		/// <summary>
		/// 
		/// </summary>
		/// <param name="fromInclusive"></param>
		/// <param name="toExclusive"></param>
		/// <param name="predicate"></param>
		/// <returns></returns>
		public static bool Exists(int fromInclusive, int toExclusive, Predicate<int> predicate) {
			return true;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <typeparam name="T"></typeparam>
		/// <param name="collection"></param>
		/// <param name="predicate"></param>
		/// <returns></returns>
		public static bool Exists<T>(IEnumerable<T> collection, Predicate<T> predicate) {
			return true;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <typeparam name="T"></typeparam>
		/// <param name="collection"></param>
		/// <param name="predicate"></param>
		/// <returns></returns>
		public static bool ForAll<T>(IEnumerable<T> collection, Predicate<T> predicate) {
			return true;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <param name="fromInclusive"></param>
		/// <param name="toExclusive"></param>
		/// <param name="predicate"></param>
		/// <returns></returns>
		public static bool ForAll(int fromInclusive, int toExclusive, Predicate<int> predicate) { 
			return true;
		}
		/// <summary>
		/// 
		/// </summary>
		/// <param name="condition"></param>
		[Conditional("CONTRACTS_FULL")]
		public static void Invariant(bool condition) { }

		/// <summary>
		/// 
		/// </summary>
		/// <param name="condition"></param>
		/// <param name="userMessage"></param>
		[Conditional("CONTRACTS_FULL")]
		public static void Invariant(bool condition, string userMessage) { }

		/// <summary>
		/// 
		/// </summary>
		/// <typeparam name="T"></typeparam>
		/// <param name="value"></param>
		/// <returns></returns>
		public static T OldValue<T>(T value) {
			return value;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <typeparam name="TException"></typeparam>
		/// <param name="condition"></param>
		public static void Requires<TException>(bool condition) where TException : Exception {
		}

		/// <summary>
		/// 
		/// </summary>
		/// <param name="condition"></param>
		/// <param name="userMessage"></param>
		[Conditional("CONTRACTS_FULL")]
		public static void Requires(bool condition, string userMessage) { }

		/// <summary>
		/// 
		/// </summary>
		/// <param name="condition"></param>
		[Conditional("CONTRACTS_FULL")]
		public static void Requires(bool condition) { }

		/// <summary>
		/// 
		/// </summary>
		/// <typeparam name="TException"></typeparam>
		/// <param name="condition"></param>
		/// <param name="userMessage"></param>

		public static void Requires<TException>(bool condition, string userMessage) where TException : Exception { }

		/// <summary>
		/// 
		/// </summary>
		/// <typeparam name="T"></typeparam>
		/// <returns></returns>

		public static T Result<T>() {
			return default(T);
		}

		/// <summary>
		/// 
		/// </summary>
		/// <typeparam name="T"></typeparam>
		/// <param name="value"></param>
		/// <returns></returns>

		public static T ValueAtReturn<T>(out T value) {
			value = default(T);
			return default(T);

		}

	}
}
